#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QCameraInfo>
#include <QVideoWidget>
#include <QCameraImageCapture>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QHttpMultiPart>
#include <QHttpPart>
#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <QMessageBox>
#include <QTimer>
#include <QDateTime>
#include "httpmanager.h"

QT_BEGIN_NAMESPACE
namespace Ui
{
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void openCamera();

    void getAttendRule();

    void updateCurrentTime();
private slots:

    void on_comboBox_currentIndexChanged(int index);

    void onImageCaptured(int id, const QImage &image); // 拍照完成回调

    void onUploadFinished(QNetworkReply *reply); // 上传结果回调

    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager *manager = nullptr;
    QCamera *camera = nullptr;                   // 摄像头对象
    QVideoWidget *videoWidget = nullptr;         // 预览窗口
    QCameraImageCapture *imageCapture = nullptr; // 拍照对象
    QString currentEmployeeId;                   // 当前员工号
    QTimer *timer = nullptr;         // 定时触发器
    bool isUploading = false; // 新增：标记是否正在上传打卡请求

    void releaseCameraResources(); // 辅助函数：释放现有摄像头和预览窗口
    void initCameraList();         // 辅助函数：初始化摄像头设备列表

    void updateCheckInButtonState();
};
#endif // MAINWINDOW_H
